#ifndef __BSP_INT_H
#define __BSP_INT_H
#include "imx6ul.h"

/**
 *   中断驱动头文件
*/

/*中断处理函数形式*/   //这里是声明一个函数类型的指针   system_irq_handler_t handler   注意前面定义变量handler时没有使用*号
typedef void (* system_irq_handler_t)(uint32_t gicciar,void *param);  //最后一个参数是 CPU接口基地址

/*中断处理函数结构体*/
typedef struct _sys_irq_handle
{
    system_irq_handler_t irqHandler;     //中断处理函数
    void * userParam;                    //中断处理函数参数                
}sys_irq_handle_t;

/*函数声明*/
void int_init(void);
void system_irqtable_init(void);
void system_register_irqhandler(IRQn_Type irq,system_irq_handler_t handler,void *userParam);
void system_irqhandler(uint32_t gicciar);  //这个函数会在汇编中被调用
void default_irqhandler(uint32_t gicciar,void *userParam); 


/*
    ID0~ID15分配给了SGI
    ID16~ID31分配隔了PPI
    IID32~ID1019这998个ID分配给了SPI,但是I.MX6UL只使用了128中断ID
  */

#endif  // !__BSP_INT_H

